区块链应用步入实战,漏洞隐患不可忽视
区块链被称为信任机器。正因为如此,区块链代码安全质量的评估尤为重要。2018年7月,“亲,你的链是什么链?”一文为读者归纳了何为真链、弱链、伪链、非链、胡链、空链。
2021年,众多企业区块链应用相继从概念转为示范,从示范进入实操。当近两年大力推进的电子存证类和金融交易类,区块链应用步入实战,安全隐患也被高度重视。什么样的区块链适用于司法存证?什么样的区块链适用于数字资产交易?作为区块链行业中的一员,呼吁业内技术工作者认真修复产品漏洞,不只是区块链本身的,还有区块链智能合约和预言机。
以下是《泰山沙盒》天德区块链产业沙盒产品之一的“区块链源码安全检测平台”所出具的软件代码质量安全检测报告概述页截图(完整报告请联系天德科技)。
(技术提示:根据区块链的特性和设计,不一定每个传统编程的漏洞,都是区块链代码的漏洞,但报告中的每一个Bug和漏洞都需要由技术人员认真评估,从而保障应用系统的安全。)
真链
这种链使用拜占庭将军协议作为共识机制,至少需要三轮投票。每个节点都是相互独立的,存储同样的数据,使用加解密算分。
天德链使用CBFT拜占庭协议
弱链
弱化的区块链使用数据库一致性协议,这些称之为“刘关张”协议,而不用拜占庭将军协议。“刘关张”协议就是节点之间互信的协议,刘备、关羽、张飞三人桃园结义,互相信任对方,他们互不欺骗对方,三兄弟齐心协力。如果将他们对应于传统的区块链系统各个节点,也就是说各节点只可能出现死机或是断开连接的情况,不会向其他节点发送虚假消息,互信协议中不会出现恶意节点(向不同的节点发送不同的消息)。这样的协议无法发现或抵挡恶意节点,这些恶意节点的攻击可以使系统瘫痪。这样的链只能在“信任”环境里运行,里面节点不能说谎。这样的一致性协议只需要两轮投票。弱链因为少了一轮投票,所以速度会比真链快,但无法抵抗拜占庭将军攻击。
刘关张桃园三结义,因为互相信任,不能防止拜占庭将军攻击
伪链
有些区块链为了取得更快的交易速度,采用了中心化的控制,这直接和区块链定义冲突,所以这种区块链为“伪链”。这种伪区块链披着区块链的外衣,却是中心化的系统。在一个中心化的系统中,控制整个区块链的中心节点就是这个系统最为薄弱的环节。如果中心节点故意说谎或者被人攻破,则整个区块链瘫痪。不论是公链或是私链,都可能是中心化的链。区块链不能采用中心化的系统来实现,这完全违背区块链的初衷。由Linux基金会发起的HyperLdger系统中每笔交易信息都要经过Zookeeper软件处理,由于Zookeeper是一个中心化的系统,所以HyperLedger是一个中心化的系统也是一个伪链。
Hyperledger 使用中心化的系统(Zookeeper)来实现
还有其他伪链使用已经被证实使用了不安全的加密算法。国外有一公司自称有高速区块链,仔细问答后才知道是使用已经被证实不安全的加密算法。使用这样的加密算法链肯定不安全,这样的链也是伪链。
伪链最大的风险,就是不安全。如果中心被攻破,整个链就被攻破;使用不安全的加密算法,区块链系统不安全。
非链
有些系统设计理念与区块链类似,但改变区块链的架构,或只者保留一部分区块链机制,这些系统称为“非链”。顾名思义,非即不是,意为不是区块链,但又和区块链有一定的联系。出名的非链包括IOTA、 Hashgraph、Corda、 闪电网络、Guardtime.
例如IOTA,新一代公共分布式账本,其核心利用了一种基于有向无环图(DAG)的新数据结构。通过DAG,IOTA能够实现较高的交易吞吐量,IOTA和区块链存在很大区别,他们有两个不同的架构。
IOTA 不是区块链, 是区块链延伸
Hashgraph也使用了类似于DAG的共识机制,它使用了以下两种技术:(1)互相传播(Gossip about Gossip);(2)虚拟投票(Virtual Voting)。互相传播本质上意味着向本次传播附加一些额外的信息,即两者之间互相传播内容的哈希值。通过使用这些信息,就可以创建Hashgraph,而且有更多信息传播时,每一个节点都可以持续更新。一旦Hashgraph形成,就很容易知晓节点的投票,因为当每一个节点收到信息时,我们也都知道了它们所拥有的信息。这个数据可以用作投票机理的输入值,就可以很快找到。Hashgraph属于非链。
Corda也是一种非链。他的出发点是公司与公司之间的单笔合约,其共识也只发生在单笔交易的参与方之间,而并不对所有的参与者进行共识,数据的同步也只是在单笔交易的参与节点之间,而不是在所有节点之间的,这与区块链的设计是不同的。Corda采用了刘关张一致协议保证数据一致性,在验证的过程中使用了数字签名。
非链还有闪电网络和Guardtime,它们各自拥有不同的功能,满足不同场景的需要。非链前途未卜,能不能被金融市场接受还是一个问题, 例如加拿大央行对Corda就有三个严重批评, 指其不成熟,使用Corda会增加银行系统的风险。
现在大部分的非链还没有经过严格的检验,或是没有通过央行的测试,进步的空间非常大。但随着技术不断进步,区块链的功能更加完善,非链也会进步。由于非链可以有全新的创新,以后无数的新非链可以出现,说不定非链有一天可以成功,飞越起来,成为“飞”链。
加拿大央行过去两年积极验证区块链
非链如果使用中心化系统,那也是伪链。例如Ripple公司的协议在今年被证实是由中心控制的,因此它既是非链,又是伪链。
胡链
意为“胡言乱语”的链,这些区块链设计没有科学依据,甚至与事实依据相违背。例如有些区块链宣称有可以容错超过1/3错误节点的共识协议,这与科学相违背,就是“胡链”。胡链的白皮书可能是抄袭别人的,将几种不能融合的技术放在一起,其中提到的参与单位可能是不可能参与的。胡链如果没有真正做出来,就是空链。胡链也可以称湖链,“胡”和“湖”不分,因为都是胡言乱语, 没有科学依据。
空链
当前市面上存在很多假的项目,这些项目只发币炒币,但并没有具体落地的链,这些链被称为空链,意为“空气链”或是“在太空的链”。
表1 区块链分类及特点
种类 | 特点 |
真链 | 共识机制为拜占庭将军协议 |
弱链 | 每个节点互相信任,使用刘关张协议 |
伪链 | 使用中心化协议或是系统, 或是使用不安全的加密算法 |
非链 | 有区块链理念,但不是区块链 |
胡链 | 无科学根据的链 |
空链 | 只发币,没有链 |
几种链之间的关系如图1所示。
图1 各种链关系
图1表示, 一个真链和伪链、非链、弱链、胡链、空链没有交集;一个弱链和真链、非链、胡链、空链没有交集;一个伪链可能是非链或是胡链,但不能是真链或是弱链;一个非链不能是真链或是弱链, 但非链可能是伪链(如果使用中心系统来实践);一个胡链不能是真链或是弱链,但可能是伪链。
©2020 北京天德科技有限公司